home *** CD-ROM | disk | FTP | other *** search
/ Aminet 37 / Aminet 37 (2000)(Schatztruhe)[!][Jun 2000].iso / Aminet / dev / misc / TCS.lha / TCS / examples / sources / TriBuf.s < prev    next >
Text File  |  2000-04-13  |  3KB  |  113 lines

  1. *******************************************************************************
  2. * simple triple buffering example
  3. *******************************************************************************
  4. * INFO    shows how to work with a FullRes triple buffered display
  5. * NOTE    - experiment with the display definition parameters
  6. *    - LMB to exit anytime
  7. *******************************************************************************
  8.  
  9.     machine    68020
  10.  
  11.     include    INCLUDES:libraries/tcs.i
  12.     include    INCLUDES:libraries/tcs_lib.i
  13.  
  14.  
  15.  
  16. *******************************************************************************
  17. * custom display definitions
  18. *******************************************************************************
  19.  
  20. DSPLWD    =    320    ;our TCS display width and
  21. DSPLHT    =    256    ;height in 140 ns pixels
  22. SCRWD    =    320    ;TCS screen width and
  23. SCRHT    =    256    ;height in pixels
  24. DSPLX0    =    $81*4    ;display start
  25. DSPLY0    =    $2c    ;position (SHRES pixels)
  26. DSPLX1    =    DSPLX0+DSPLWD*4    ;display end
  27. DSPLY1    =    DSPLY0+DSPLHT    ;position (SHRES pixels)
  28. DSPLBRTNS    =    256    ;max brightness
  29. GFXCTXT    =    0
  30. CWBTM    =    0
  31. CWTOP    =    0
  32. CWRT    =    0
  33. CWLF    =    0
  34. VDOMODE    set    TCS_VM_RGBW | TCS_VMf_FullRes ;TCS display video mode
  35. VDOMODE    set    VDOMODE | TCS_VMf_TriBuf
  36.  
  37.  
  38.  
  39. *******************************************************************************
  40. * code start
  41. *******************************************************************************
  42.  
  43.     include    /includes/shl_strtup.i
  44.  
  45.  
  46.  
  47. *******************************************************************************
  48. * init
  49. *******************************************************************************
  50.  
  51. _PrgInit    move.w    #0,ccr    ;OK!
  52.     rts
  53.  
  54.  
  55.  
  56. *******************************************************************************
  57. * main
  58. *******************************************************************************
  59.  
  60. _PrgMain    move.l    #TriBufHndlr,([_VBR.l],$6c.w) ;set level3 autovector
  61.     move.w    #$c020,$dff09a    ;set INTENA.VERTB
  62.  
  63. .lp    movea.l    DIAdr,a0    ;our display
  64.     moveq.l    #0,d0    ;x0
  65.     moveq.l    #0,d1    ;y0
  66.     move.w    #SCRWD-1,d2    ;x1
  67.     move.w    #SCRHT-1,d3    ;y1
  68.     move.b    #255,d4    ;color
  69.     CALLTCS    DrwFrm0    ;mark screen with a rectangle
  70.  
  71.     movea.l    DIAdr,a0    ;render FullRes screen
  72.     CALLTCS    CPUFRPass0    ;to make changes visible
  73.  
  74.     movea.l    DIAdr,a0    ;acknowledge screen
  75.     CALLTCS    TriUpd    ;rendering completion
  76.  
  77.     btst.b    #6,$bfe001
  78.     bne.s    .lp    ;if not LMB...
  79.     rts
  80.  
  81.  
  82.  
  83. *******************************************************************************
  84. * cleanup
  85. *******************************************************************************
  86.  
  87. _PrgClnUp    rts
  88.  
  89.  
  90.  
  91. *******************************************************************************
  92. * triple buffer handler (level 3 interrupt handler)
  93. *******************************************************************************
  94.  
  95. TriBufHndlr    btst.b    #5,$dff01f
  96.     beq.s    .exit    ;if not INTREQR.VERTB...
  97.     movem.l    d0-d1/a0-a1/a6,-(sp)
  98.  
  99.     movea.l    DIAdr,a0
  100.     CALLTCS    TriSwp    ;swap screen buffers
  101.  
  102.     movem.l    (sp)+,d0-d1/a0-a1/a6
  103. .exit    move.w    #$70,$dff09c    ;clr INTREQ.BLIT/VERTB/COPER
  104.     rte
  105.  
  106.  
  107.  
  108. *******************************************************************************
  109. * data
  110. *******************************************************************************
  111.  
  112.     include    /includes/dat.i
  113.